package de.jmda.core;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Marks types and packages. {@link MarkerAnnotationPackageType#ignore()}
 * optionally signals that this annotation should be ignored.
 */
@Retention(RetentionPolicy.SOURCE)
@Target
(
		{
			ElementType.TYPE,
			ElementType.PACKAGE
		}
)
@Documented
public @interface MarkerAnnotationPackageType
{
	/**
	 * @return Set this annotation attribute to <code>true</code> if you want to
	 *         signal to annotation processors that an annotated element and
	 *         existing nested elements are to be ignored.
	 *         <p>
	 *         This is especially useful if you want to ignore nested elements of
	 *         let's say a package without removing annotations for each nested
	 *         element (e.g. class in that package) manually.
	 */
	boolean ignore() default false;
}